La gestione dei file. Visualizzazione di una directory
Il PHP, come vedremo, è in grado di
gestire in modo semplice e completo i file del sistema; e cioè in grado di
visualizzare il contenuto di una directory qualsiasi, creare un nuovo
file,aprirlo ed inserire ulteriori dati, copiarlo, cancellarlo e rinominarlo.
Adesso vedremo passo passo come eseguire tutte queste operazioni elencate.
Aprire una directory qualsiasi sembra la più facile di tutte le operazioni sopra
descritte invece è la più complicata e vediamo perché:
Apriamo come sempre il nostro Blocco Note per la scrittura dei file PHP e HTML e
cominciamo a scrivere il seguente blocco:
<?
$nomedir = "/Cartella/";
$dir = opendir($nomedir);
$elenco = "<ul>";
while ($nomefile = readdir($dir))
{ if (($nomefile != ".") || ($nomefile != ".."))
{ $elenco .= "<li>$nomefile"; }
$elenco .= "</ul>";
closedir($dir);
?>
<html><head><title>Elenco di una
directory</title></head>
<body>
<p>Elenco dei file contenuti nella directory <? echo "$nomedir"; ?>
<p><? echo "$elenco"; ?>
</body>
</html>
A prima vista non sembra poi così
complicato da comprendere, specie per chi ha già una certa dimestichezza con i
linguaggi C e C++.
In pratica non abbiamo fatto altro che dichiarare una variabile che contiene il
percorso della directory da visualizzare, omettendo il nome del drive in quanto,
nel mio caso, l'hard disk ha un unica partizione, denominata C; nel caso vi siano
più partizioni nel disco fisso
indicare la lettera del drive da utilizzare (anche la stessa C).
Creiamo una
semplice cartella qualsiasi in C, per evitare percorsi lunghi e tortuosi, e con
la
variabile d'appoggio di nome $dir apriamo la nostra cartella con la
funzione opendir(); la variabile $nomefile, tramite un ciclo, "preleverà" i nomi dei
file e delle eventuali sottodirectory contenute in essa aggiungendole alla
variabile $elenco, che ne memorizzerà il contenuto. Naturalmente avrete
notato la condizione del ciclo che impedisce di prelevare directory chiamate "."
(punto) e ".." (doppio punto), comprensibili per chi ha una certa manualità con
MS-DOS, in quanto esse rappresentano directory "di servizio", e non
consultabili, delle cartelle create. Avrete anche notato che la variabile $elenco è stata impostata in modo da essere visualizzata sotto forma di elenco
puntato in modo da ottenere un certo ordine dei file elencati.
Infine, come previsto da qualsiasi procedura di gestione dei file, abbiamo chiuso
la nostra cartella con l'istruzione closedir(), in quanto la mancata
chiusura di un file
o una directory al termine di qualsiasi operazione eseguita in essi potrebbe comportare il
danneggiamento o la perdita dei dati all'atto dello spegnimento del nostro PC.
Concludiamo con il codice HTML per la
visualizzazione delle operazioni descritte.